package avaliacao.Handler;

import avaliacao.Constantes;
import avaliacao.DTO.DTOUniversidade;
import avaliacao.DAO.DAOUniversidade;
import avaliacao.Exception.Err;
import avaliacao.Util;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class FormularioUniversidadeHandler implements HandlerInterface{
    DAOUniversidade daoUniversidade = new DAOUniversidade();

    public String process(HttpServletResponse response, HttpServletRequest request) {

        DTOUniversidade universidade = new DTOUniversidade();
        String resultado = Constantes.MEC_OK_CADASTRO;

        universidade.setNome(request.getParameter(Constantes.MEC_UNIVERSIDADE_NOME_FORM_CAMPO));
        universidade.setLogradouro(request.getParameter(Constantes.MEC_UNIVERSIDADE_LOGRADOURO_FORM_CAMPO));
        universidade.setNumero(request.getParameter(Constantes.MEC_UNIVERSIDADE_NUMERO_FORM_CAMPO));
        universidade.setComplemento(request.getParameter(Constantes.MEC_UNIVERSIDADE_COMPLEMENTO_FORM_CAMPO));
        universidade.setCidade(request.getParameter(Constantes.MEC_UNIVERSIDADE_CIDADE_FORM_CAMPO));
        universidade.setEstado(request.getParameter(Constantes.MEC_UNIVERSIDADE_ESTADO_FORM_CAMPO));
        universidade.setPais(request.getParameter(Constantes.MEC_UNIVERSIDADE_PAIS_FORM_CAMPO));
        universidade.setTelefone(request.getParameter(Constantes.MEC_UNIVERSIDADE_TELEFONE_FORM_CAMPO));
        universidade.setDdd(request.getParameter(Constantes.MEC_UNIVERSIDADE_DDD_FORM_CAMPO));
        universidade.setDdi(request.getParameter(Constantes.MEC_UNIVERSIDADE_DDI_FORM_CAMPO));

        if (!verificarCampos(universidade))
            resultado = Constantes.MEC_ERR_PREENCHIMENTO_FORM_INVALIDO;

        if(!resultado.equals(Constantes.MEC_ERR_PREENCHIMENTO_FORM_INVALIDO) &&
                !daoUniversidade.cadastrarUniversidade(universidade))
        {
            if(universidade.getId() != -1)
                resultado = Constantes.MEC_ERR_UNIVERSIDADE_JA_EXISTE;
            else
                resultado = Constantes.MEC_ERR_CADASTRO;
        }

        request.setAttribute(Constantes.MEC_ATRIBUTO_STATUS, resultado);
        request.setAttribute(Constantes.MEC_UNIVERSIDADE_NOME_FORM_CAMPO, universidade.getNome());

        return "/cadastroUniversidade.jsp";
    }

    public boolean verificarCampos(DTOUniversidade universidade)
    {
        Boolean check = true;

        if(universidade.getComplemento().trim().length() != 0)
            if(!Util.verificarCamposAlfabeticos(universidade.getComplemento(),
                                                0,
                                                Constantes.MEC_COMPLEMENTO_CARACTERES_VALIDOS).equals(Err.OK))
                check = false;

        if(universidade.getTelefone().trim().length() != 0)
            if(!Util.verificarCamposAlfabeticos(universidade.getTelefone(),
                                                Constantes.MEC_UNIVERSIDADE_TELEFONE_TAM_MIN,
                                                Constantes.MEC_NUMEROS_CARACTERES_VALIDOS).equals(Err.OK))
                check = false;

        if(universidade.getDdd().trim().length() != 0)
            if(!Util.verificarCamposAlfabeticos(universidade.getDdd(),
                                                Constantes.MEC_UNIVERSIDADE_DDD_TAM_MIN,
                                                Constantes.MEC_NUMEROS_CARACTERES_VALIDOS).equals(Err.OK))
                check = false;

        if(universidade.getDdi().trim().length() != 0)
            if(!Util.verificarCamposAlfabeticos(universidade.getDdi(),
                                                Constantes.MEC_UNIVERSIDADE_DDI_TAM_MIN,
                                                Constantes.MEC_NUMEROS_CARACTERES_VALIDOS).equals(Err.OK))
                check = false;

        if(!Util.verificarCamposAlfabeticos(universidade.getNome(),
                                            Constantes.MEC_UNIVERSIDADE_NOME_TAM_MIN,
                                            Constantes.MEC_NOME_CARACTERES_VALIDOS).equals(Err.OK))
            check = false;

        if(!Util.verificarCamposAlfabeticos(universidade.getLogradouro(),
                                            Constantes.MEC_UNIVERSIDADE_LOGRADOURO_TAM_MIN,
                                            Constantes.MEC_NOME_CARACTERES_VALIDOS).equals(Err.OK))
            check = false;

        if(!Util.verificarCamposAlfabeticos(universidade.getNumero(),
                                            Constantes.MEC_UNIVERSIDADE_NUMERO_TAM_MIN,
                                            Constantes.MEC_NUMERO_ENDERECO_CARACTERES_VALIDOS).equals(Err.OK))
            check = false;

        if(!Util.verificarCamposAlfabeticos(universidade.getCidade(),
                                            Constantes.MEC_UNIVERSIDADE_CIDADE_TAM_MIN,
                                            Constantes.MEC_NOME_CARACTERES_VALIDOS).equals(Err.OK))
            check = false;

        if(!Util.verificarCamposAlfabeticos(universidade.getEstado(),
                                            Constantes.MEC_UNIVERSIDADE_ESTADO_TAM_MIN,
                                            Constantes.MEC_NOME_CARACTERES_VALIDOS).equals(Err.OK))
            check = false;

        if(!Util.verificarCamposAlfabeticos(universidade.getPais(),
                                            Constantes.MEC_UNIVERSIDADE_PAIS_TAM_MIN,
                                            Constantes.MEC_NOME_CARACTERES_VALIDOS).equals(Err.OK))
            check = false;

        return check;
    }
}
